import { _decorator, Component, game, sys } from "cc";
import { tt } from "./Global";

/*
# -*- coding: utf-8 -*-
# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

# 注意：

# 若希望将本代码用于商业用途，需先联系作者并获得明确授权。
# 作者不对因使用本代码引发的任何直接或间接损失负责。
# 如有违反上述条款的行为，作者保留追究法律责任的权利。

# 免责声明：
# 请尊重知识产权，遵循相关法律法规。

# Notice:
# If you wish to use this code for commercial purposes, you must contact the author and obtain explicit authorization.
# The author is not responsible for any direct or indirect losses caused by the use of this code.
# If any of the above terms are violated, the author reserves the right to pursue legal action.
# Disclaimer:
# Please respect intellectual property rights and comply with relevant laws and regulations.

# Внимание:
# Если вы хотите использовать этот код в коммерческих целях, вам необходимо связаться с автором и получить явное разрешение.
# Автор не несет ответственности за любые прямые или косвенные убытки, возникшие в результате использования этого кода.
# В случае нарушения вышеуказанных условий автор оставляет за собой право на юридическое преследование.
# Отказ от ответственности:
# Пожалуйста, уважайте интеллектуальную собственность и соблюдайте соответствующие законы и нормативные акты.

# Attention :
# Si vous souhaitez utiliser ce code à des fins commerciales, vous devez contacter l'auteur et obtenir une autorisation explicite.
# L'auteur n'est pas responsable des pertes directes ou indirectes causées par l'utilisation de ce code.
# En cas de violation des conditions ci-dessus, l'auteur se réserve le droit de poursuivre une action en justice.
# Avertissement :
# Veuillez respecter les droits de propriété intellectuelle et vous conformer aux lois et réglementations en vigueur.

 */
const { ccclass, property } = _decorator;


@ccclass
export default class MaidianNew extends Component {

    public tt = window["tt"];


    @property({ type: String })
    miniAppid: string = 'tt11f6674b8efbbd4b02';

    onLoad () {
        // 让当前节点在场景切换时不被销毁
        game.addPersistRootNode(this.node);
    }

    start() {
        console.log('maidian_new')
        if (typeof this.tt == 'undefined') {
            return;
        }

        this.loginNow();

        let clickid;
        let ops = this.tt.getLaunchOptionsSync();
        //console.log("ops : " + JSON.stringify(ops))
        if (ops.query && ops.query.ad_params) {
            console.log(ops.query.ad_params);
            const decodedString = decodeURIComponent(ops.query.ad_params);
            let jsonval = JSON.parse(decodedString);
            //console.log(jsonval);
            if (jsonval.log_extra && jsonval.log_extra.clickid) {
                clickid = jsonval.log_extra.clickid;
                console.log(clickid);
                sys.localStorage.setItem(this.miniAppid + 'ClickId', clickid);
            } else {
                console.log('没有click_2');
            }

            console.log('click1id====', clickid);
            if (clickid && this.canClaimReward(this.miniAppid + 'Active')) {
                let timenow = Date.now();
                tt.request({
                    url: 'https://analytics.oceanengine.com/api/v2/conversion',
                    method: 'post',
                    data: {
                        "event_type": "active",
                        "context": {
                            "ad": {
                                "callback": clickid
                            }
                        },
                        "timestamp": timenow
                    },
                    header: {
                        'content-type': 'application/json',
                    },
                    fail: function (res) {
                        console.log('激活埋点事件====fail');
                        console.log('激活结果=', res);
                    },
                    success: function (res) {
                        console.log('激活埋点事件====success');
                        console.log('激活结果=', res);
                    }
                })
                console.log('激活');
                // 更新上次领取时间
                const currentDate = new Date().toISOString();
                sys.localStorage.setItem(this.miniAppid + 'Active', currentDate);
            }
        }

        var newkey = this.miniAppid;

        window.maidianback = callbackres => {
            let clickid = sys.localStorage.getItem(newkey + 'ClickId');
            if (clickid) {
                if (clickid && clickid != null) {
                    let timenow = Date.now();
                    tt.request({
                        url: 'https://analytics.oceanengine.com/api/v2/conversion',
                        method: 'post',
                        data: {
                            "event_type": "game_addiction",
                            "context": {
                                "ad": {
                                    "callback": clickid
                                }
                            },
                            "timestamp": timenow
                        },
                        header: {
                            'content-type': 'application/json',
                        },
                        fail: function (res) {
                            console.log('埋点事件====fail');
                            console.log('关键行为结果=', res);
                        },
                        success: function (res) {
                            console.log('埋点事件====success');
                            console.log('关键行为结果=', res);
                        }
                    })
                }
                console.log('激活');
            } else {
                console.log("没有clickid");
            }
        }
    }

    loginNow() {
        let _this = this;
        _this.tt.getSystemInfo({
            success(sysinfores) {
                console.log('getSystemInfo==', sysinfores);
                if (!_this.canClaimReward(_this.miniAppid + sysinfores.model)) {
                    console.log('getSystemInfoLog已记录==');
                    return;
                }
                _this.tt.login({
                    force: true,
                    success(loginres) {
                        console.log(`login 调用成功${loginres.code} ${loginres.anonymousCode}`);
						tt.getUserInfo({
							success: function(userinfo) {
								_this.tt.request({
								    url: "https://ecpm.sangliangban.com/openid/openlog/insertlog",
								    method: 'GET',
								    data: {
								        "appid": _this.miniAppid,
										"nickName": userinfo.userInfo.nickName,
								        "code": loginres.code,
								        "anonymousCode": loginres.anonymousCode,
								        "system": sysinfores.system,
								        "platform": sysinfores.platform,
								        "brand": sysinfores.brand,
								        "modelx": sysinfores.model,
								        "version": sysinfores.version,
								        "appName": sysinfores.appName,
								        "SDKVersion": sysinfores.SDKVersion,
                                        "multitonRewardTimes": sysinfores.multitonRewardTimes
								    },
								    header: {
								        'content-type': 'application/json',
								    },
								    fail: function (res) {
								        console.log('openidlog==fail==', res);
								    },
								    success: function (res) {
								        let data = res.data;
								        if (data.d && data.d.user && data.d.user.openid) {
								            let useropenid = data.d.user.openid;
								            console.log('openidlog==succ==', res);
								            // 更新上次领取时间
								            const currentDate = new Date().toISOString();
								            sys.localStorage.setItem(_this.miniAppid + sysinfores.model, currentDate);
								        } else {
								            console.log('openidlog==fail==', res);
								        }
								    }
								})
							},
							fail: function(err) {
								_this.tt.request({
								    url: "https://ecpm.sangliangban.com/openid/openlog/insertlog",
								    method: 'GET',
								    data: {
								        "appid": _this.miniAppid,
										"nickName": '',
								        "code": loginres.code,
								        "anonymousCode": loginres.anonymousCode,
								        "system": sysinfores.system,
								        "platform": sysinfores.platform,
								        "brand": sysinfores.brand,
								        "modelx": sysinfores.model,
								        "version": sysinfores.version,
								        "appName": sysinfores.appName,
								        "SDKVersion": sysinfores.SDKVersion,
                                        "multitonRewardTimes": sysinfores.multitonRewardTimes
								    },
								    header: {
								        'content-type': 'application/json',
								    },
								    fail: function (res) {
								        console.log('openidlog==fail==', res);
								    },
								    success: function (res) {
								        let data = res.data;
								        if (data.d && data.d.user && data.d.user.openid) {
								            let useropenid = data.d.user.openid;
								            console.log('openidlog==succ==', res);
								            // 更新上次领取时间
								            const currentDate = new Date().toISOString();
								            sys.localStorage.setItem(_this.miniAppid + sysinfores.model, currentDate);
								        } else {
								            console.log('openidlog==fail==', res);
								        }
								    }
								})
							}
						});
                        
                    },
                    fail(res) {
                        console.log(`login 调用失败`);
                    },
                });
            },
            fail(res) {
                console.log(`getSystemInfo 调用失败`);
            },
        });
    }

    canClaimReward(key) {
        const lastClaimDateStr = sys.localStorage.getItem(this.miniAppid + key);
        if (!lastClaimDateStr) {
            return true; // 如果没有记录，可以领取
        }
        const lastClaimDate = new Date(lastClaimDateStr);
        const currentDate = new Date();
        const oneMonthAgo = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
        return lastClaimDate < oneMonthAgo;
    }
}

/**
 * #if NO_AND_ERROR
public void TEXT1() 
{
	int textNum = 1;
	if (textNum == 1) 
	{
		textNum = 2;
    }
}
public void TEXT2()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}
public void TEXT3()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT4()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT5()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT6()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT8()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT9()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT10()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT11()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT12()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT13()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT14()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT15()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT16()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}

public void TEXT17()
{
    int textNum = 1;
    if (textNum == 1)
    {
        textNum = 2;
    }
}
#endif
 */